package com.htt.bms.common;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

/**
 * @author 侯婷婷
 * @version 1.0
 * @description 返回包装类
 */
public class WrapMapper {

    private WrapMapper(){}

    //code+message+result
    public static <E> Wrapper<E> wrap(int code, String message, E o){
        return new Wrapper<>(code, message, o);
    }

    //code+message
    public static <E> Wrapper<E> wrap(int code, String message){
        return new Wrapper<E>(code, message);
    }

    //code
    public static <E> Wrapper<E> wrap(int code){
        return new Wrapper<E>(code, null);
    }

    //返回result
    public static <E> E unWrap(Wrapper<E> wrapper){
        return wrapper.getResult();
    }

    //非法参数
    public static <E> Wrapper<E> illegalArgument(){
        return wrap(Wrapper.ILLEGAL_ARGUMENT_CODE_,Wrapper.ILLEGAL_ARGUMENT_MESSAGE);
    }

    //错误
    public static <E> Wrapper<E> error(){
        return wrap(Wrapper.ERROR_CODE, Wrapper.ERROR_MESSAGE);
    }

    public static <E> Wrapper<E> error(String message){
        return wrap(Wrapper.ERROR_CODE, StringUtils.isBlank(message) ? Wrapper.ERROR_MESSAGE : message);
    }

    public static <E> Wrapper<E> error(int code, String message){
        return wrap(code, StringUtils.isBlank(message) ? Wrapper.ERROR_MESSAGE : message);
    }

    public static <E> Wrapper<E> ok(){
        return new Wrapper<>();
    }

    public static <E> Wrapper<E> wrap(E o){
        return new Wrapper<>(Wrapper.SUCCESS_CODE,Wrapper.SUCCESS_MESSAGE,o);
    }

    public static <E> Wrapper<E> ok(E o){
        return new Wrapper<>(Wrapper.SUCCESS_CODE,Wrapper.SUCCESS_MESSAGE,o);
    }

    public static <E> Wrapper<E> success(){
        return new Wrapper<>(Wrapper.SUCCESS_CODE,Wrapper.SUCCESS_MESSAGE);
    }
}
